home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 31 / Amiga Format CD31 (1998-09-02)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1998-10].iso / -websites- / sasg / dfa / rexx / importadm.lzh / importadm.dfa
Text File  |  1996-06-16  |  7KB  |  236 lines

  1. /* $Revision Header built automatically *************** (do not edit) ************
  2. **
  3. ** © Copyright by Dirk Federlein
  4. **
  5. ** File             : importadm.dfa
  6. ** Created on       : Friday, 01.04.94 12:29:21
  7. ** Created by       : Dirk Federlein
  8. ** Current revision : V3.0
  9. **
  10. **
  11. ** Purpose
  12. ** -------
  13. **
  14. ** If you've used ADM (what a shame:-)) up to now to manage
  15. ** your addresses, this script will help you to switch to DFA
  16. ** without loosing any data or even reentering all of your
  17. ** addresses!
  18. **
  19. ** It imports all addresses currently available from a running
  20. ** ADM application.
  21. **
  22. **
  23. ** This script should be bound to a function key of DFA, but
  24. ** will work as well, if you start it from the shell using the
  25. ** 'rx' command of Arexx, i.e. 'rx importadm.dfa'. Of course, you
  26. ** have to make sure that DFA _and_ ADM are running!
  27. **
  28. ** Please note that it is not possible to import the addresses
  29. ** 1:1 as not all fields exist in ADM _and_ DFA. The following
  30. ** translation is made:
  31. **
  32. ** -------------------------------------------------------------
  33. **         ADM                -->           DFA
  34. **         ---                              ===
  35. ** SALUTATION + COMPANY                  SALUTATION
  36. **       REMARK1                           COMMENT
  37. **       COMPANY                           EMAIL3
  38. **  ADDRESS Line # 1                       STREET
  39. **  ADDRESS Line # 2                         CO
  40. **         ID                             <empty>
  41. **       <empty>                           STATE
  42. ** -------------------------------------------------------------
  43. **
  44. ** The other strings are taken 1:1
  45. **
  46. ** Please notice that the <empty> strings above means that either
  47. ** ADM or DFA does not support this field and it is not imported
  48. ** into DFA,
  49. ** Of course you may modify the translation described
  50. ** above to fit you needs.
  51. **
  52. ** Group flags 1-8 of ADM are put into DFA. Flags 9 and 10 of ADM
  53. ** are not imported.
  54. **
  55. **
  56. ** Revision V3.0
  57. ** --------------
  58. ** created on Sonntag, 28.01.96 13:20:32  by  Dirk Federlein.   LogMessage :
  59. **   - Change to make it compatible to ADM 2.03
  60. **   -  country is supported
  61. **   -  new group flags handling (ADM)
  62. **   -  company is imported
  63. **   -  ext files are tried to be imported
  64. **
  65. ** Revision V2.0
  66. ** --------------
  67. ** created on Friday, 01.04.94 12:29:21  by  Dirk Federlein.   LogMessage :
  68. **     --- Initial release ---
  69. **
  70. *********************************************************************************/
  71.  
  72. options results
  73.  
  74. cr    = '0A'X
  75. quote    = '22'X
  76. quote2 = '27'X
  77.  
  78. if ~show(ports, DFA) then
  79.     exit 10
  80.  
  81. if ~show(ports, ADM.1) then
  82.     exit 20
  83.  
  84.  
  85.     /*
  86.      * DISABLE DFA GUI
  87.      */
  88.  
  89. ADDRESS 'DFA' GUI INPUT OFF OUTPUT OFF
  90.  
  91.     /*
  92.      * DISABLE ADM GUI
  93.      */
  94.  
  95. ADDRESS 'ADM.1' LOCKGUI
  96.  
  97.     /* --- ADM: Get number of addresses available ----------------------- */
  98.  
  99. ADDRESS 'ADM.1' ADDRINMEM
  100.  
  101. numadr = RESULT
  102.  
  103.     /* --- ADM: Activate first entry ------------------------------------ */
  104.  
  105. ADDRESS 'ADM.1' ACTIVATEFIRST
  106.  
  107. DO FOR numadr
  108.  
  109.         /*
  110.          * ADM: Get current address and put it into 'ADMADDRESS'
  111.          */
  112.  
  113.     ADDRESS 'ADM.1' GETADDRESS ADMADDRESS
  114.  
  115.         /*
  116.          * Handling of group flags has changed in "newer" ADM versions. I've
  117.          * adopted and tested it using the (public) version of ADM 2.03.
  118.          * If it does not work with your ADM version, try to get the latest ADM
  119.          * version and try again.
  120.          * Notice: Due to the fact that DFA handles up to 8 groups, ADM's groups
  121.          * #9 and #10 are lost while converting to DFA.
  122.          */
  123.  
  124.  
  125.     FLAGSTRING    = ""
  126.  
  127.     ALLFLAGS    = ADMADDRESS.FLAGS
  128.  
  129.     groupset = index(ALLFLAGS, 'A')
  130.  
  131.     if groupset > 0 then
  132.         FLAGSTRING    = FLAGSTRING 'GROUP1'
  133.  
  134.     groupset = index(ALLFLAGS, 'B')
  135.  
  136.     if groupset > 0 then
  137.         FLAGSTRING    = FLAGSTRING 'GROUP2'
  138.  
  139.     groupset = index(ALLFLAGS, 'C')
  140.  
  141.     if groupset > 0 then
  142.         FLAGSTRING    = FLAGSTRING 'GROUP3'
  143.  
  144.     groupset = index(ALLFLAGS, 'D')
  145.  
  146.     if groupset > 0 then
  147.         FLAGSTRING    = FLAGSTRING 'GROUP4'
  148.  
  149.     groupset = index(ALLFLAGS, 'E')
  150.  
  151.     if groupset > 0 then
  152.         FLAGSTRING    = FLAGSTRING 'GROUP5'
  153.  
  154.     groupset = index(ALLFLAGS, 'F')
  155.  
  156.     if groupset > 0 then
  157.         FLAGSTRING    = FLAGSTRING 'GROUP6'
  158.  
  159.     groupset = index(ALLFLAGS, 'G')
  160.  
  161.     if groupset > 0 then
  162.         FLAGSTRING    = FLAGSTRING 'GROUP7'
  163.  
  164.     groupset = index(ALLFLAGS, 'H')
  165.  
  166.     if groupset > 0 then
  167.         FLAGSTRING    = FLAGSTRING 'GROUP8'
  168.  
  169.         /*
  170.          * ADM's comment may be more than one line, i.e. a newline is allowed
  171.          * in ADM's comment field as well as chars used by Arexx like ", ', ...
  172.          * Filter it out...
  173.          */
  174.  
  175.     NEWREMARK = translate(ADMADDRESS.REMARK1, ";", (cr) )
  176.     NEWREMARK = translate(NEWREMARK, "*", quote)
  177.     NEWREMARK = translate(NEWREMARK, "*", quote2)
  178.  
  179.     say NEWREMARK
  180.  
  181.         /*
  182.          * DFA: Insert new address
  183.          *
  184.          * NB: ADM has several fields DFA hasn't and vice versa. Due to this fact I try
  185.          *     to find another solution for all fields with no "exact match".
  186.          *     * ADM's title field is put into the salutation field additionally.
  187.          *     * ADM's company field is stored into DFA's email #3
  188.          *     * DFA's state field is not used (ADM has no similar field)
  189.          *
  190.          * External file handling via Arexx is a bit tricky! ADM returns a filename
  191.          * and DFA expects the file _contents_, as the filename is generated automatically.
  192.          * If the import of the external files does not work as expected, please
  193.          * put comment the foolowing block "out".
  194.          *
  195.          */
  196.  
  197.     exttext = ""
  198.  
  199.     say ADMADDRESS.EXTFILE
  200.  
  201.     if ADMADDRESS.EXTFILE ~= "" then
  202.     do
  203.         if open('admext', ADMADDRESS.EXTFILE, 'R') ~= 0 then
  204.         do
  205.             exttext = readch('admext', 65535)
  206.         end
  207.  
  208.         if exttext ~= "" then
  209.         do
  210.             ADDRESS 'DFA' 'NEW' 'SALUTATION='quote||ADMADDRESS.SALUTATION ADMADDRESS.TITLE||quote 'NAME='quote||ADMADDRESS.LASTNAME||quote 'FIRST='quote||ADMADDRESS.FIRSTNAME||quote 'CO='quote||ADMADDRESS.ADDRESS2||quote 'STREET='quote||ADMADDRESS.ADDRESS1||quote 'ZIP='quote||ADMADDRESS.POSTCODE||quote 'CITY='quote||ADMADDRESS.CITY||quote 'COUNTRY='quote||ADMADDRESS.COUNTRY||quote 'BIRTHDAY='quote||ADMADDRESS.BIRTHDAY||quote 'PHONE='quote||ADMADDRESS.TELEPHONE||quote 'FAX='quote||ADMADDRESS.FAX||quote  'EMAIL1='quote||ADMADDRESS.EMAIL1||quote 'EMAIL2='quote||ADMADDRESS.EMAIL2||quote  'EMAIL3='quote||ADMADDRESS.COMPANY||quote 'COMMENT='quote||NEWREMARK||quote 'EXTERNAL='quote||exttext||quote FLAGSTRING
  211.         end
  212.     end
  213.     else
  214.     do
  215.         ADDRESS 'DFA' 'NEW' 'SALUTATION='quote||ADMADDRESS.SALUTATION ADMADDRESS.TITLE||quote 'NAME='quote||ADMADDRESS.LASTNAME||quote 'FIRST='quote||ADMADDRESS.FIRSTNAME||quote 'CO='quote||ADMADDRESS.ADDRESS2||quote 'STREET='quote||ADMADDRESS.ADDRESS1||quote 'ZIP='quote||ADMADDRESS.POSTCODE||quote 'CITY='quote||ADMADDRESS.CITY||quote 'COUNTRY='quote||ADMADDRESS.COUNTRY||quote 'BIRTHDAY='quote||ADMADDRESS.BIRTHDAY||quote 'PHONE='quote||ADMADDRESS.TELEPHONE||quote 'FAX='quote||ADMADDRESS.FAX||quote  'EMAIL1='quote||ADMADDRESS.EMAIL1||quote 'EMAIL2='quote||ADMADDRESS.EMAIL2||quote  'EMAIL3='quote||ADMADDRESS.COMPANY||quote 'COMMENT='quote||NEWREMARK||quote FLAGSTRING
  216.     end
  217.         /* --- ADM: Next entry ------------------------------------------ */
  218.  
  219.     ADDRESS 'ADM.1' ACTIVATENEXT
  220.  
  221. END
  222.  
  223.     /*
  224.      * Reactivate ADM GUI
  225.      */
  226.  
  227. ADDRESS 'ADM.1' UNLOCKGUI
  228.  
  229.     /*
  230.      * Reactive DFA-GUI
  231.      */
  232.  
  233. ADDRESS 'DFA' GUI INPUT ON OUTPUT ON
  234.  
  235. EXIT
  236.